/* Universidad del Valle de Guatemala
 * Seccion 30, Algoritmos y Estructura de Datos
 * Mariana Castillo, 12319
 * Julio Maldonado, 12377
 * Archivo Texto
 */
package hoja9;

public interface Grafo<V,E> {
    
    /**
     * Agrega un vertice al grafo
     * @param vertice
     */
    public void addVertice(V vertice);
    
    /**
     * Agrega una conexion entre dos vertices
     * @param v1
     * @param v2
     * @param edge
     */
    public void addEdge(V v1, V v2, E edge );
    
    /**
     * Muestra la matriz de adyacencia del grafo
     */
    public void show();
    
    /**
     * Devuelve el vertice correspondiente
     * @param vertice
     * @return
     */
    public V get(int vertice);
    
    /**
     * Devuelve o muestra la conexion entre dos vertices
     * @param v1
     * @param v2
     * @return
     */
    public int getEdge(V  v1, V v2);
    
    /**
     * Verifica si el vertice existe en el grafo
     * @param vertice
     * @return
     */
    public boolean containsVertice(V vertice);
    
    /**
     * Devuelve el tamano del grafo
     * @return
     */
    public int size();
    
    /**
     * Devuelve la posicion del un vertice
     * @param vertice
     * @return
     */
    public int getIndex(V vertice);
    
    
}
